package com.ai.driver.domain.vo;

/**
 * ClassName:    DriverBehaviorResponse
 * Description:  TODO
 * Author:       yuzx
 * Date:         2025/9/9 11:20
 * Version:      1.0
 **/



import com.fasterxml.jackson.annotation.JsonProperty; // 导入Jackson注解
import lombok.Data;
import java.util.List;

/**
 * 驾驶行为分析响应VO（添加Jackson注解，匹配百度API下划线字段）
 */
@Data
public class DriverBehaviorResponse {

    /**
     * 唯一日志ID（百度问题定位用，匹配百度返回的log_id）
     */
    @JsonProperty("log_id") // 关键：匹配百度返回的log_id（下划线）
    private Long logId;

    /**
     * 检测到的总人数（含驾驶员和乘客，匹配百度返回的person_num）
     */
    @JsonProperty("person_num") // 匹配百度返回的person_num
    private Integer personNum;

    /**
     * 检测到的驾驶员数目（匹配百度返回的driver_num）
     */
    @JsonProperty("driver_num") // 匹配百度返回的driver_num
    private Integer driverNum;

    /**
     * 驾驶员详细信息列表（匹配百度返回的person_info）
     */
    @JsonProperty("person_info") // 匹配百度返回的person_info
    private List<PersonInfo> personInfo;

    /**
     * 驾驶员位置与行为属性
     */
    @Data
    public static class PersonInfo {
        /**
         * 驾驶员位置信息（匹配百度返回的location）
         */
        private Location location;

        /**
         * 驾驶员行为属性（9种行为，匹配百度返回的attributes）
         */
        private Attributes attributes;
    }

    /**
     * 位置坐标（像素，字段与百度返回的location完全匹配）
     */
    @Data
    public static class Location {
        private Integer left;   // 匹配百度返回的left（无需注解，字段名一致）
        private Integer top;    // 匹配百度返回的top
        private Integer width;  // 匹配百度返回的width
        private Integer height; // 匹配百度返回的height
        private Float score;    // 匹配百度返回的score
    }

    /**
     * 9种驾驶行为属性（核心：每个字段加注解匹配百度下划线字段）
     */
    @Data
    public static class Attributes {
        // 匹配百度返回的smoke（字段名一致，无需注解）
        private Behavior smoke;                 // 吸烟

        // 匹配百度返回的cellphone（字段名一致，无需注解）
        private Behavior cellphone;             // 使用手机

        // 关键：匹配百度返回的not_buckling_up（下划线）
        @JsonProperty("not_buckling_up")
        private Behavior notBucklingUp;         // 未系安全带

        // 关键：匹配百度返回的both_hands_leaving_wheel
        @JsonProperty("both_hands_leaving_wheel")
        private Behavior bothHandsLeavingWheel; // 双手离开方向盘

        // 关键：匹配百度返回的not_facing_front
        @JsonProperty("not_facing_front")
        private Behavior notFacingFront;        // 视角未朝前方

        // 关键：匹配百度返回的no_face_mask
        @JsonProperty("no_face_mask")
        private Behavior noFaceMask;            // 未佩戴口罩

        // 匹配百度返回的yawning（字段名一致，无需注解）
        private Behavior yawning;               // 打哈欠

        // 关键：匹配百度返回的eyes_closed
        @JsonProperty("eyes_closed")
        private Behavior eyesClosed;            // 闭眼

        // 关键：匹配百度返回的head_lowered
        @JsonProperty("head_lowered")
        private Behavior headLowered;           // 低头
    }

    /**
     * 单个行为的概率与阈值（字段与百度返回一致，无需注解）
     */
    @Data
    public static class Behavior {
        private Float score;     // 匹配百度返回的score（行为概率）
        private Float threshold; // 匹配百度返回的threshold（建议阈值）
    }
}